package io.renren.modules.minio.service;

import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.multipart.MultipartFile;

import java.io.InputStream;
import java.util.List;

/**
 * minio
 *
 * @author 40659
 * @since 2025/1/22 09:07
 */
public interface MinioService {

    /**
     * 删除文件
     *
     * @param filePath 要删除的文件路径list
     * @return 是否成功
     */
    Boolean deleteFile(List<String> filePath);

    /**
     * 获取文件流
     *
     * @param filePath 文件路径
     * @return 文件流
     */
    InputStream getInputStream(String filePath);

    /**
     * 文件上传
     *
     * @param file 文件
     * @return 路径
     */
    String upload(MultipartFile file);

    /**
     * 文件上传
     *
     * @param base64String 文件base64格式
     * @return 路径
     */
    String uploadBase64(String base64String);

    /**
     * 获取访问地址
     *
     * @param filePath 文件路径
     * @return 访问地址
     */
    String getUrl(String filePath);

    /**
     * 文件下载
     *
     * @param filePath 文件路径
     * @param response 响应对象
     * @return 是否成功
     */
    Boolean download(String filePath, HttpServletResponse response);

    /**
     * 文件预览
     *
     * @param filePath 文件路径
     * @param response 响应对象
     */
    void view(String filePath, HttpServletResponse response);

    /**
     * 获取文件内容，适用于文本格式
     *
     * @param filePath 文件路径
     * @return 文件内容
     */
    String getFileContent(String filePath);

    /**
     * 获取文件内容
     *
     * @param filePath 文件路径
     * @return 文件内容
     */
    byte[] getFileContentByte(String filePath);
}
